/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package fiad.model.person;

import fiad.model.Ausbildungsbetrieb;
import fiad.model.Kontaktdaten;
import java.io.Serializable;
import java.util.Date;
import java.util.GregorianCalendar;
import javax.persistence.CascadeType;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.ManyToOne;
import javax.persistence.NamedQueries;
import javax.persistence.OneToOne;
import javax.persistence.Table;
import javax.persistence.Temporal;

/**
 *
 * 
 */
@Entity
@Table(name = "person")
@NamedQueries({
		@javax.persistence.NamedQuery(name = "lesenPerson", query = "Select person FROM Person person WHERE person.id = :person ORDER BY person.nachname ASC"),
                @javax.persistence.NamedQuery(name = "lesenALLEPerson", query = "Select person FROM Person person")})
public  class Person implements Serializable {
    @Id
    @GeneratedValue
    private Long id;
    protected String anrede;
    protected String nachname;
    protected String vorname;
    @OneToOne(cascade=CascadeType.ALL)
    protected Kontaktdaten kontaktdaten;

     @Temporal(javax.persistence.TemporalType.DATE)
   private Date entlassungvomHHBK;

    public Person() {
    }

    public Person(String anrede, String nachname, String vorname, Kontaktdaten kontaktdaten) {
        this.anrede = anrede;
        this.nachname = nachname;
        this.vorname = vorname;
        this.kontaktdaten = kontaktdaten;
    }

    public Person(long id, String anrede, String nachname, String vorname, Kontaktdaten kontaktdaten) {
        this.id = id;
        this.anrede = anrede;
        this.nachname = nachname;
        this.vorname = vorname;
        this.kontaktdaten = kontaktdaten;
    }


    

    public Long getId() {
        return id;
    }

    public void setId(Long id) {
        this.id = id;
    }

    public String getAnrede() {
        return anrede;
    }

    public void setAnrede(String anrede) {
        this.anrede = anrede;
    }

    public Kontaktdaten getKontaktdaten() {
        return kontaktdaten;
    }

    public void setKontaktdaten(Kontaktdaten kontaktdaten) {
        this.kontaktdaten = kontaktdaten;
    }

    public String getNachname() {
        return nachname;
    }

    public void setNachname(String nachname) {
        this.nachname = nachname;
    }

    public String getVorname() {
        return vorname;
    }

    public void setVorname(String vorname) {
        this.vorname = vorname;
    }
    
    @Override
    public String toString(){
        String returnString = "";
        if(anrede != null){
            returnString = anrede + " ";
        }
        return returnString+ nachname + ", " + vorname;
    }

      public Date getEntlassungvomHHBK() {
        return entlassungvomHHBK;
    }

    public void setEntlassungvomHHBK(Date entlassungvomHHBK) {
        this.entlassungvomHHBK = entlassungvomHHBK;
    }

    public boolean isLoeschbar() {
        GregorianCalendar calendar = new GregorianCalendar();
        GregorianCalendar entlassung = new GregorianCalendar();
        entlassung.setTime(entlassungvomHHBK);
        calendar.add(GregorianCalendar.YEAR, -10);


       if (calendar.before(entlassung))
       {
           return false;
       }
        return true;
    }

    public String getVornameNachname(){
        return vorname + " " + nachname;
    }
}
